<?php

require_once '../ctl/config.php';
set_time_limit(0);

function run() {
	require_once 'Zend/Http/Client.php';

	$pages = array('', 2, 3, 4, 5, 6, 7, 8, 9, 10);
	foreach ($pages as $p) {
		echo $p;
		$client = new Zend_Http_Client('http://joyreactor.ru/best/' . $p);
		$client->setConfig(array('timeout' => 30));
		$response = $client->request();
		$body = $response->getBody();
	
		//echo '<meta http-eqexuiv="Content-Type" content="text/html; charset=utf-8">';



		$dom = new Zend_Dom_Query($body);
		$containers = $dom->query('.article');

		// На joyreactor все посты лежат внутри div class='article'
		foreach ($containers as $key => $container) {
			$info = array();

			// Из поста нам нужен - рейтинг, ссылка на картинку, ext_id, тэги, дата поста
			$html = get_inner_html($container);
			$d = new Zend_Dom_Query($html);

			// Изначально, узнаем ID и рейтинг поста, если он уже у нас есть - обновляем и выходим
			$spanWithId = $d->query('span.post_rating')->current();
			$rating = $d->query('span.post_rating span')->current();
		
			$info['ext_id'] = intval(trim($spanWithId->getAttribute("post_id")));
			preg_match('/\d+\.\d+/', $rating->nodeValue, $ratingMatch);
			$info['rating'] = $ratingMatch[0];
			$tmp = mysql_query("select * from joy where ext_id = {$info['ext_id']}");
			$row = mysql_fetch_assoc($tmp);
			// Если пост уже существует - обновляем рейтинг и переходим к следующему
			if ($row) {
				$q = "update joy set rating = {$info['rating']} where ext_id = {$info['ext_id']}";
				echo $q . "\n";
				$r = mysql_query($q);
				if (!$r) {
					$e = mysql_error();
					echo $e . "\n";
					error_log($e);
				}

				continue;
			}

			// Заполняем остальные поля
			$image = $d->query('div.image img')->current();
			if (!$image) {
				continue;
			}

			$info['img_src'] = trim($image->getAttribute('src'));
			// Если нам попалась гифка - пропускаем 
			if (preg_match('/\.gif$/', $info['img_src'])) continue;

			$info['img_width'] = trim(intval($image->getAttribute('width')));
			$info['img_height'] = trim(intval($image->getAttribute('height')));

			// Теперь тэги, делаем строкой
			/*$tags = $d->query('h1.taglist a');
			$info['tags'] = null;		
			foreach ($tags as $tag) {
				$info['tags'] .= trim($tag->nodeValue) . ' ';
			}
			$info['tags'] = trim($info['tags']);*/

			// Дату добавления поста
			//$date = $d->query('span.date')->current();
			//$info['add_date'] = str_replace(';', '', trim($date->nodeValue));

			// Ссылку на сам пост
			$info['url'] = "http://joyreactor.ru/post/{$info['ext_id']}";
		
		
			$date = date('Y-m-d H:i:s');
			$info['add_date'] = $date;
			$info['created'] = $date;
			$info['modified'] = $date;

			$query = '';
			foreach ($info as $k => $v) {
				$query .= "`$k` = '$v',";
			}
			$query = trim($query, ',');

			$query = "insert into joy set $query";
			echo $query . "\n";
		
			$result = mysql_query($query);
			if (!$result) {
				$e = mysql_error();
				echo $e . "\n";
				error_log($e);
			} 
		} // end foreach posts
	} // end foreach pages
} // end run function


function get_inner_html( $node ) {
    $innerHTML= '';
    $children = $node->childNodes;
    foreach ($children as $child) {
	$innerHTML .= $child->ownerDocument->saveXML($child);
    }

    return $innerHTML;
} 

ob_start();
run();
$content = ob_get_contents();
$f = fopen('joy.log', 'a+');
fwrite($f, $content);
fclose($f);



